Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сеть контроллеров Modicon M340
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
driller
Нажмите для просмотра прикрепленного файла

Здравия желаю господа.
На работе поставил 3 отдельностоящих ПЛС М340, которые читают и обрабатывают инфо со своих модулей.
Все Плсишки работают на BMX P34 2020. На каждом контроллере заведен свой IP адрес.
Все эти Р34 2020 подсоеденены к эзернету. Через эзернет я могу с компа на котором установлен юнити про подсоедениться к любому контроллеру, и видеть все данные вживую. На этом же компе стоит прога написанная мною на Дельфи, которая подсоединяется ко всем трем контроллерам читает состояние I/O и выводит на экран. Растояние между ПЛСшками около 50 метров, а очень часто нужно что бы
вывод на третьем контроллере зависил от статуса вводов на первом и на втором.
простой пример думаю будет выглядеть так:

PLC 1 Input 1 __ PLC 2 Input 5 ___ PLC 3 Input 3 ___ PLC 3 Output 1
----| |---------------------| |------------------------| |----------------( )--------------

Так вот, столько я не пытался понять как это можно сделать, ничего не добился сам. Поэтому и решил задать тут вопрос.

Что мне надо сделать в программе Unity Pro XL v3, для того что бы научить ПЛСишку 3 читать определенные входы-выходы с ПЛсишек 1 и 2, и наоборот.
Помогите практическим советом пжалуйста, или дайте ссылки на хороший мануал (англ, руск).
Спасибо заранее.
Евгений (N-ск)
У вас программа UNITY (делфи) выполняет функцию MASTER, а контроллеры SLAVE

назначьте 3 контроллер MASTER-ом для опроса 1 и 2
Rus75
вот здесь немного по вашему вопросу http://se-automation.in.ua/advices/28-tran...t-device-access
driller
Евгений,
Цитата
У вас программа UNITY (делфи) выполняет функцию MASTER, а контроллеры SLAVE

назначьте 3 контроллер MASTER-ом для опроса 1 и 2


а как это сделать то ? что то я не могу найти как пересести статус хозяин-раб.

Rus75,
спасибо ща покопаюсь
san
В Modbus TCP/IP нет разделения на Master и Slave, есть разделения на Клиент и Сервер. Любой из ПЛК может одновременно быть и Modbus TCP/IP Client и Server. Для реализации клиентских запросов через проц нужно пользоваться функциями READ_VAR и WRITE_VAR. В хелпе есть примеры для М340 на Modbus TCP/IP. Поищите. Сервера прошиты на уровне оси.
driller
san,

уже несколько дней я безпрерывно копаюсь в сети и в мануалах в поисках ответа на вопрос куда же мне вписать в Unity Pro в пограмме для третьей ПЛСишки этот самый READ_VAR что бы эта самая 3-я ПЛСишка через эзернет соединялась с первой ПЛСишкой и спрашивала у нее состояние входа %I0.4.6 например.

Помогите если сможете.
san
Сейчас попробую на NOE, потом вышлю пример
san
Нажмите для просмотра прикрепленного файла
Вот пример. Сразу скажу что непосредственно %I считывать нельзя, только %M или %MW. На сервере нужно проделывать переприсвоение. IP-шник пропишите свой, название соединения тоже свое. А так, почитайте еще хелп по этим функциям.
driller
san,

спасибо за помощь, процесс сдвинулся с мертвой точки.
Программа в одной ПЛКшке читает %MW из другой, что в принципе радует,
теперь остается задача разложить полученное число по битам, и прочитать статус именно того ввода\вывода который нужен.
Заметил в библиотеке функцию WORD_To_BIT которая выдаст как я думаю статус каждого бита, только вот чтобы использовать ее, надо как то array of integer где содержится полученное число перевести в этот самый WORD.

есть мысли как это сделать наикратчайшим путем ?

Еще раз спасибо за оказанную помощь.
driller
сделал сам, но не знаю, является ли это лучшим решением.

ANY_Array_INT функцией MAX_ARINT перевел в Integer, Integer функцией INT_TO_WORD перевел в WORD, а далее уже

WORD_TO_BIT выводит распиновку каждого бита котрому присвоена BOOL переменная.
Вот по состоянию этой переменной я и считываю статус.

san
Это делается просто: %MW20.14 - доступ к 14-му биту
driller
san,
спасибо за помошь, Вы очень помогли в решении этой мелкой но очень важной задачи.
san
Пожалуйста. Обращайтесь, если что. ;-)
Lowkee
Вопрос появился?

Подскажите,с помощью каких моделей или с помощью какиъх средств осуществить упаковку данных? то есть чтобы биты %M101 106 111 упаковывались в слова

Подскажите пож-та?
limite
типо того
%M101 MOV %MW1.1
%M106 MOV %MW1.2
Kuzyma
Если элементов не много то упаковку можно произвести простым присваиванием
%MW1.1:=%M101;
%MW1.2:=%M106;
Если битовых элементов много то можно воспользоваться встронными функциями работы с массивами битовых переменных.
Что-бы сделать определенные данные с одного ПЛК доступными в сети Ethernet для других ПЛК существует также механизм Global Data. Он удобнее если у вас больше 2-х ПЛК и каждый отдает и принимает данные.
Почитать как работает и посмотреть пример использования можно здесь: http://se-automation.in.ua/articles/27-tra...ady-global-data
Lowkee
Подскажите пож-та,а что может служить ошибкой в дайнонм случае?

Адрессацию в памяти сделал...
{Derived Variables} : The topological type is incompatible. : Massive2_27
Kuzyma
Покажите скриншот из менеджера переменных этого массива Massive2_27.
Lowkee
Вот собственно и скриншот
san
EBOOL и BOOL - это две большие разницы. EBOOL в Премиум занимает 3 бита, а в М340 - по моему 8 бит. Присваивание один другому разрешается, но не привязывание (читай локализация) булевых переменных к прямому EBOOL адресу. Вот по этому у Вас не соответствие типов.
Если Вам не нужно отлавливание фронтов можете не пользоваться %M, а вместо них использовать биты из %MW.
Lowkee
Проблема в том,что если я указываю бит через NW например MW101.1 он у меня меняет не битовую часть а часть 101 то есть 1 на 2 и т.д ,а нужно чтобы меня битовую....Посоветуйте пож-та,как поступить?
Lowkee
Форумчане,не получается добиться от программы нужного результата,ошибок не выдает,но и результата тоже,сдавать проект в ближайшие 5 бдней.
Кто мог бы посмотреть его,был бы признателен,в случае необходимости в долгу не останусь
Lowkee
Подскажите пож-та,что может быть за ошибка,когда я подключаюсь к контроллеру,Unity пишут
This isnt a valid PLC Address,or PLC is busy,or media is off

Точнее как ее решить?
k0der_
Цитата(san @ 7.10.2010, 15:13) *
В хелпе есть примеры для М340 на Modbus TCP/IP. Поищите.

нету. только на serial port
san
Цитата(san @ 7.10.2010, 16:09) *
Нажмите для просмотра прикрепленного файла
Вот пример. Сразу скажу что непосредственно %I считывать нельзя, только %M или %MW. На сервере нужно проделывать переприсвоение. IP-шник пропишите свой, название соединения тоже свое. А так, почитайте еще хелп по этим функциям.

k0der , Вам это пример не помог?
k0der_
Цитата(san @ 6.2.2011, 12:14) *
k0der , Вам это пример не помог?

к сожалению нет. посмотре одно видео. завтра на работе протестю.
san
А что именно в нем не понятно?
Это ж не видео а рисунок.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.